/*
 * basic_header.h
 *
 *  Created on: Jun 28, 2024
 *      Author: root
 */

#ifndef INC_BASIC_HEADER_H_
#define INC_BASIC_HEADER_H_

#include "config.h"

#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/time.h>
#include <unistd.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdlib.h>
#include <stdbool.h>
#include <stdio.h>
#include <string.h>
#include <stdint.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/types.h>          /* See NOTES */
#include <sys/stat.h>

#include <sys/types.h>
#include <unistd.h>
#include <assert.h>
#include <sys/types.h>
#include <signal.h>

#include <FreeRTOS.h>
#include <queue.h>
#include <task.h>
#include <semphr.h>
#include <stream_buffer.h>
#include <message_buffer.h>
#include <timers.h>

#include <lv_port_disp.h>

#include "main.h"

#ifdef __cplusplus
extern "C" {

void my_assert(const void *expr, const void *file, int line, const void *fun);

}
#else
void my_assert(const void *expr, const void *file, int line, const void *fun);
#endif

#define ASSERT(con)	do{ if (!(con)){\
				my_assert(#con,__FILE__,__LINE__,__FUNCTION__);\
				vTaskSuspendAll(); \
							while(1); \
						} \
					}while(0)

#define DELAY(ms)	vTaskDelay(pdMS_TO_TICKS(ms))

#define NL "\n"  // next line char
#define MEM_ZERO(t)   memset(&(t),0,sizeof(t))
#define ARRAY_SIZE(a)	(sizeof(a)/sizeof(a[0]))
#ifndef __cplusplus  // not define c++
#define max(a,b) ((a)>(b))?(a):(b)
#define min(a,b) ((a)>(b))?(b):(a)
#endif	// end not define c++

#define NOW()   xTaskGetTickCount()

#ifdef __cplusplus //// for c++
#include <vector>
#include <atomic>
#include <tuple>
#include <mutex>
#include <memory>
#include <cassert>
#include <cstring>
#include <iostream>
#include <fstream>
#include <thread>
#include <condition_variable>
#include <cstdarg>
#include <queue>
#include <ctime>
#include <functional>
#include <set>
#include <map>
#include <unordered_map>
#include <unordered_set>
#include <algorithm>
#include <ctime>
#include <regex>


#endif		/// end for c++

#endif /* INC_BASIC_HEADER_H_ */
